<!DOCTYPE html>
<html>
  <head>
    <title>
      Test performance of 100 AudioWorkletNodes (bypassing).
    </title>
    <script src="../resources/runner.js"></script>
    <script src="resources/webaudio-perf-utils.js"></script>
  </head>
  <body>
    <script>
      async function graphBuilder() {
        const context = new OfflineAudioContext(1, 48000, 48000);
        await context.audioWorklet.addModule('resources/bypass-processor.js');
        const source = new ConstantSourceNode(context);

        // Create 100 AudioWorkletNodes that are serially connected.
        const testNodes = [];
        for (let i = 0; i < 100; ++i) {
          testNodes.push(new AudioWorkletNode(context, 'bypass-processor'));
          if (i === 0) continue;
          testNodes[i - 1].connect(testNodes[i]);
        }

        source.connect(testNodes[0]);
        testNodes[99].connect(context.destination);
        source.start();
        return context;
      }

      RunWebAudioPerfTest({
        description: 'Test performance of 100 AudioWorkletNodes (bypassing)',
        graphBuilder: graphBuilder,
        tracingOptions: {
          targetCategory: 'disabled-by-default-webaudio.audionode',
          targetEvents: ['AudioWorkletHandler::Process'],
        }
      });
    </script>
  </body>
</html>
